home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Light ROM 1
/
LIGHT-ROM 1 (Amiga Library Services)(1994).iso
/
ffdisks
/
d969.lha
/
ACE
/
ACE-2.0.lha
/
DOCS.LHA
/
history
< prev
next >
Wrap
Text File
|
1994-01-19
|
39KB
|
943 lines
-----------
ACE history
-----------
2/3/92 - Version 1.0 released to testers.
13/3/92 - Numerous bug fixes:
- parameters were being corrupted in some
complex recursive calls (see ackermann.b).
- array referencing with float index in INPUT
was corrupting the input value.
- narrator library was being expunged after
every SAY command -- now only expunged
once at the end of the program.
14/3/92 - Above fixes released to testers.
22/3/92 - 27/3/92 - Added block comments {...}.
- Added forward SUB declarations.
- Made ALL shared variables call-by-reference.
- Local SUB string duplication bug fixed (same
BSS object name being given to numerous
strings in different subprograms).
- Re-released to testers.
4/4/92 - Fixed relational string operators >,<,>=,<=
so that proper lexicographical comparisons are
made. Even though = and <> worked fine before,
these have also been modified. All now use a
more efficient C-style _strcmp function.
5/4/92 - Update sent to testers.
7/4/92 - Maximum duration for SOUND (in db.lib) changed
to 999 from 77 to accomodate large sound samples
(see play.b for an example).
21/4/92 - Sequential files simplified: EOF no longer looks
for EOF character (ASCII 28), it just tries to
seek past the current position returning a seek
error if it can't (ie: EOF reached).
22/4/92 - Made CLS 1.3 and 2.04 compatible (in db.lib).
- Added logical shift functions [SHL(n,m),SHR(n,m)].
- Added turtle graphics XCOR and YCOR functions.
- Fixed long integer SUB bug: when calling a long
SUB with bsr, A68K spat the dummy when it saw
a '&' (eg: bsr TEST&). All '&'s replaced by '@'s.
- Added Ctrl-C trapping to compiler. Partly works.
- Fixed HEADING so it's always non-negative.
2/5/92 - 8/5/92 - Added screens, PALETTE, PAINT, SYSTEM, DATE$.
- Made CIRCLE rendering faster by using DrawEllipse()
if full 360 degree ellipse is requested.
- Updated ace.doc and noted that SADD is not required
for string constants (ie: it's optional).
12/5/92 - Incorporated command line arguments [argcount,arg$].
16/5/92 - Added single precision MOD.
- Fixed OCT$ which was giving incorrect results
for high values. Now only handles positive LONGs.
- Added BIN$. Like OCT$, n=abs(n) [n is LONG].
- Added FRE(n), with extras (see ace.doc).
- Added POTX(n) and POTY(n), where n=0 or 1.
17/5/92 - Fixed bug in _deletewindow (db.s): Contents of
location zero was being moved into window lists
instead of #0 (!).
6/6/92 - Fixed RIGHT$ bug: was returning the NULL string
when requested sub-string length equalled string
length.
- Modified MOUSE(1) and MOUSE(2) code to work when
an ACE screen is active.
8/6/92 - Added WorkBench startup capability.
- Added REPEAT...UNTIL loop construct ala Pascal
- Added CASE...END CASE construct.
- Added DAY function.
9/6/92 - Added two compiler options:
(i) Ctrl-C break trapping.
(ii) Optimisation (peephole).
11/6/92 - Added definable numeric constants.
- Incorporated a BORDERLESS window for each
user-defined screen to facilitate IDCMP
events.
- INKEY$ can now be used to read keystrokes
from a user-defined screen's window.
- Fixed RAW: window routine bug. The same
Wdw-id was unwittingly being allowed to be
used for more than one window creation.
12/6/92 - Modified CLS to work with user-defined screens.
13/6/92 - 14/6/92 - Incorporated external variables
and functions (C, assembler...).
28/6/92 - Modified LOCATE to work with user-defined screens.
- Fixed exponentiation so that it always returns
a float, in case of a negative exponent.
29/6/92 - Incorporated full 32-bit math. ACE is now Wb 2.0
*reliant* (due to use of utility.library):
(i) 32-bit division replaced 32-bit \ 16-bit.
(ii) 32-bit MOD replaced 32-bit MOD 16-bit.
(iii) Multiplication:
- 16 x 16 bit integer (new).
- 32 x 32 bit integer (new).
- float x float.
(iv) Array index calculations now use 32-bit
unsigned multiplication. This fixes the
bug that disallowed absolute indexes of
greater than 65535.
- Fixed yet another bug in INPUT: string array input
was producing pointers which all lead to one string.
- Defined numeric constants can now be signed.
30/6/92 - Added LOF(n) function.
- Modified WAVE statement so that size of waveform
table can be up to 131070 bytes (hardware limitation).
- Fixed CHR$ bug: LONG parameters weren't being
coerced to SHORT.
2/7/92 - Added the CSTR function.
3/7/92 - Added the HANDLE(n) function.
- split db.s into db.s and turtle.s due to
link problems: Blink or ACE programs GURU when
db.lib too big.
4/7/92 - Added optional variable declarations.
- Wrote a simple pre-processor for ACE: app,
to allow include files.
7/7/92 - Added event trapping: BREAK,MOUSE,TIMER(n).
- MENU event trapping not yet complete since
menus themselves have to be implemented.
- Added CSRLIN and POS for screens only so far.
- Changed over from SetSignal() to CheckSignal()
for ctrl-c -b compiler option and BREAK event
trapping.
16/7/92 - Added:
(i) ADDRESS option for DIM.
(ii) SIZE option for STRING.
(iii) increment and decrement operators.
(iv) indirection operators: @,*%,*&,*!.
17/7/92 - 19/7/92 - Improved efficiency of strings and string arrays.
The modifications also allow strings and string
arrays to be passed by reference.
20/7/92 - Modified LOCATE, POS and CSRLIN so they take
account of the current font (in ScreenMode).
- Improved PRINTS so that it behaves in almost the
same way as PRINT.
28/7/92 - Added SIZEOF function.
- Fixed a long-standing bug that caused GURUs
during parameter passing when a context-switch
occurred, corrupting the stack. This is a short-term
fix only, and will be replaced by use of C-style
parameter passing.
8/8/92 - 9/8/92 - Added structures.
- Modified VARPTR to handle structures.
6/12/92 - Divided main linked library into functional modules
which are joined to produce db.lib. The code from
db2.lib and turtle.lib has been incorporated into
db.lib.
6/12/92 - 7/12/92 - Further modularised compiler source files. I could
*really* use a make utility now!
8/12/92 - Changed SHR and SHL code generation from lsr.l and
lsl.l to asr.l and asl.l respectively, in order to
handle shifts of negative numbers correctly! (oops)
12/12/92 - 13/12/92 - Improved PAINT. Too much RAM was being reserved.
12/12/92 - 13/12/92 - Added AREA, AREAFILL, PATTERN.
13/12/92 - Added SCROLL, SPACE$.
- Fixed bug in PAINT: border color not being reset.
21/12/92 - Improved LOF by using Seek() rather than
Examine() to find file length. This removed
the need to use the 2.04 function DupLockFromFH()
making LOF 1.3 compatible.
- Reverted to SetSignal() from CheckSignal() to
preserve 1.3 compatibility.
22/12/92 - Replaced 32-bit integer math routines in
utility.library with lmath.a routines from
Sozobon's ZC.lib. This obviates the need for the
2.04 utility.library making all ACE integer math
1.3 compatible. The lmath.a module has been
incorporated into db.lib, with slight modifications
(source is called lmath.s).
- Brought DIM in line with AmigaBASIC. If a dimension
is specified as N, the resulting subscript range
is 0..N, rather than 0..N-1 (as it is in C and was
in ACE up until now).
- Removed reference to ACElibs: from libfunc.c, so
this no longer has to be ASSIGNed in the user-startup
or startup-sequence script.
26/12/92 - Added support for Workbench arguments in the form of
an include file (WBarg.h).
27/12/92 - Modified APP so that an include file is only ever
included once per program. APP now also handles
single and multi-line comments ("'" and {..}).
28/12/92 - 29/12/92 - Fixed some long-standing little bugs in the lexical
analyser.
- Moved the code for comments from the parser to the
lexical analyser.
- Added the rest of AmigaBASIC's reserved words for
completeness and because I may get around to
implementing some things that I didn't originally
think I would.
- Changed the lexical analyser's reserved word search
method from sequential to binary. This has resulted
in a dramatic improvement in compilation speed
(around twice as fast as before). I should have done
this a long time ago.
- Added code to prevent APP from looking for comments
inside string literals!
- Removed ++ and -- operators from factor() because
they are confusing (IMHO). Pre-increment (++) and
pre-decrement (--) can now only be applied to
variables, not as part of an expression.
30/12/92 - Added STRING$ and INSTR.
1/1/93 - Added descriptions for ALL functions and commands
in ref.doc since some people using ACE won't have
the AmigaBASIC manual.
5/1/93 - 6/1/93 - Work on sequential files:
- CLOSE can be used to close more than
one file now, but at least one filenumber
still has to be specified.
- Added LINE INPUT #filenumber,string-variable.
- Added INPUT$(X,[#]filenumber) and ditched
INP$.
- Improved performance of all sequential file
functions in db.lib.
- Made file format produced by WRITE identical
to AmigaBASIC.
- Added PRINT #filenumber,expression-list.
- Added INPUT#filenumber,variable-list.
- ACE files are now very nearly identical to AmigaBASIC.
12/1/93 - Fixed a bug in VAL that was causing numbers with
more than 8 decimal places to give weird results.
- In considering the use of double-precision math
in ACE, I have realised that Motorola FFP values
can handle up to 8 decimal places of accuracy,
whereas in AmigaBASIC, a number with >= 7 decimal
places is classed as a double-precision value.
Given the degradation in accuracy which occurs
when more than 8 digits (counting both sides of
the decimal point) are specified in an ACE FFP
value, AmigaBASIC's double-precision convention
will probably be followed in ACE.
- Increased the size of the buffer for INPUT$ from
MAXSTRINGSIZE to MAXSTRINGSIZE*32 (32K currently)
to facilitate the reading of longer files.
- Made all library functions which impose a limit
upon the number of characters in a string or buffer
use MAXSTRINGSIZE-1 (changed string.s and file.s).
13/1/93 - Stopped a large memory leak when ACE quits due to
an internal list memory allocation error. There
still seems to be a small leak however.
- Modified the bas script so that intermediate
files are deleted after each stage of the compile-
assemble-link process. This frees up more RAM.
19/1/93 - Fixed a bug in the lexical analyser which was
returning a value of 1 for ANY number of the
form nnE[+|-]mm when mm was 0.
20/1/93 - AREA was only allowing 19 points, not 20. Fixed this.
21/1/93 - Fixed a weird AREAFILL and PAINT bug. Both of
these routines allocate and initialise a temporary
rastport for area/flood filling. Although the
memory was being freed, the TmpRas pointer was
not zero'd. On the next call to PRINTS or Text()
a GURU 8100 000C resulted (recoverable alert under
2.04). It appears that Text() or some lower-level
graphics primitive tries to use an existing TmpRas
if one seems to exist. After making Rp->TmpRas=NULL
the bug disappeared.
26/1/93 - Modified APP so that lines taken up by block
comments are represented by line-feeds in the
destination file so as to prevent line mismatches
between the latter and the source file. This still
doesn't get around the problem of line mismatches
caused by #include directives though.
31/1/93 - Changed effect of DEFDBL and <ident># so that
they yield single-precision data types rather
than double-precision. This avoids any problems
further down the line (because double-precision
is not yet supported).
2/2/93 - Added ctrl-c user break trapping to APP and
improved the reliability of ACE's ctrl-c trapping.
4/2/93 - ACE v1.0 released to the public! First started
work on ACE in October 1991.
*******************************************************************************
6/2/93 - Work on ACE v1.01 commenced.
- Improved compile-time error handling. Now, the
whole offending line is displayed and a carat
marks the place in the line where the error was
identified. The rest of that line is then ignored
so as to prevent further spurious errors. More
work remains to be done for this revision on this.
- The observation was made that AmigaBASIC does NOT
evaluate exponentiation operations from right to
left as previously thought, but from left to right
as with all other operations. This obviates the
need to change ACE's exponentiation evaluation
method.
- AmigaBASIC does not allow a term of the form:
n^-m or n^(-m). ACE allows the latter but not
the former.
7/2/93 - Fixed INPUT from RAW: windows so that the
destructive backspace key actually erases text
as it does in a CON: window. The routine was
also cleaned up in general and made more
efficient.
- Sequential file OPEN modes can now be upper
or lower case (ie: "I" or "i" etc).
11/2/93 - Fixed the FOR loop index bug by not allowing
a shared variable to be used as the index.
- Trailing characters (other than '&') can now
be used to coerce one numeric literal to
another. Note that & and % have the same
effect as CLNG and CINT in ACE (ie: they
_always_ round up).
12/2/93 - String literals now need not have an end quote.
Such a string will be truncated at the end of
the line.
- Fixed bug in LINE INPUT# whereby the variable's
data type was not correctly established if the
variable was declared with STRING.
- LINE INPUT# was also modified to accept a string
array as well as a simple string variable.
13/2/93 - BASIC line numbers have been implemented for
backward compatibility with old BASIC programs
and for consistency with AmigaBASIC.
14/2/93 - Fixed a bug in STRUCT..END STRUCT & CASE..END CASE
where blank lines caused spurious compilation errors.
- Changed a hard-coded X:Y screen ratio constant in the
turtle graphics section of db.lib to a data item
which can be accessed/modified with ACE's EXTERNAL
directive (EXTERNAL _tg_xy_ratio).
- Made several compile-time errors "cleaner".
15/2/93 - Improved error handling for undeclared arrays.
- Fixed a bug in INPUT#. It was crashing when the
file wasn't open or the file number was invalid.
- Rewrote VAL code in C. It now handles fixed-point
and exponential format single-precision values
as well as decimal, octal and hexadecimal integers.
16/2/93 - Rewrote _short_from_string and _long_from_string
in C. These routines are used by INPUT and INPUT#
to extract integer values from strings. Decimal,
octal and hexadecimal values may now be handled
via INPUT and INPUT#.
18/2/93 - Rewrote _strsingle which is used by PRINT#, WRITE#,
PRINTS and STR$ so that it produces fixed-point
and exponential format single-precision output.
PRINT also uses this routine now. The new version
of _strsingle (written in C) is somewhat faster than
the original which was badly coded in assembler.
A single-precision number is converted to the form:
-|+.mmmmmmmmE-|+nn by fpa(). If 7 <= nn < -6 the
number is displayed in exponential format.
- Added a FIX command (see ref.doc for details) which
alters the number of decimal places a FFP value is
rounded to.
19/2/93 - Replaced _round routine in db.lib. This is used by
by CINT and CLNG and wherever a float needs to be
rounded to an integer. The new version seems to be
faster than the old one which used fpa() and arnd().
The former only uses mathffp.library functions.
20/2/93 - ACE v1.01 released.
*******************************************************************************
28/2/93 - Work on ACE v1.02 commenced.
- Added a compiler switch (-i) which makes an icon
for the executable just created by ACE.
- Added ON <event-specifier> GOTO. This is in addition
to ON <event-specifier> GOSUB which was already
implemented.
- Changed all bsr and bra 68000 instructions to jsr
and jmp respectively in order to avoid the 32K
displacement limit. Moreover, some beq instructions
have been replaced by a combination of bne and jmp
to avoid this limit. This included changes to the
code for: IF, CASE, REPEAT..UNTIL, WHILE..WEND.
- Fixed a bug whereby return code in d0 was being
overwritten before the program ended, due to calls
to cleanup routines.
1/3/93 - Changed all occurrences of bsr in db.lib and
startup.lib sources to jsr so as to avoid the
32K limit mentioned above (28/2/93).
- Implemented KILL and NAME.
- ON..GOTO and ON..GOSUB implemented.
6/3/93 - 10/3/93 - Rewrote SAY command in C and added support
for mode-array(7) and mode-array(8) such that
ACE SAY now allows for asynchronous speech.
- Moreover, a SAY(n) function has been added,
where SAY(0) returns -1 or 0 to indicate whether
there is active asynchronous speech, SAY(1) returns
the mouth width and SAY(2) returns the mouth height
corresponding to the phoneme being spoken.
14/3/93 - Added support for SAY mode-array element #6. This
allows for 12 different audio channel allocation
combinations as per AmigaBASIC. See ref.doc for more.
- Improved performance of INSTR function by only
checking first character of target string against
each character in the source string until they
match. At this point a full sub-string comparison
is carried out.
12/4/93 - Fixed a bug in shared library function declaration
code in which a search for a non-existent function
sometimes caused the compiler to hang. The routine
responsible was rewritten with a resultant speedup.
13/4/93 - Fixed a bug which had been lurking for some time,
related to string variable assignments. A string
variable not declared with the STRING command was
not always being associated with a storage area.
In fact, only the first occurrence of the string
was being so associated. If this first occurrence
was in a CASE or IF statement, it might never be
reached with the consequence that the string
in question was associated with a random address
in memory! This is now fixed, so that each time
the string is assigned a value, it is bound to
its correct address. Obvious in hindsight.
15/4/93 - Commodore Australia have given me permission to
include the .bmap files in the ACE archive. I
don't have this in writing yet though. ConvertFD
can not be distributed however, so a completely
new (functionally equivalent) program will have
to be written.
16/4/93 - 17/4/93 - A couple of bugs which were related to the above
string bug (13/4/93) were fixed because they
were missed at the time and resulted in complaints
from A68K (legitimate ones) about unknown symbols.
- Testing has shown that a plethora of problems
of previously unknown origin were related to the
string bugs described above. Also, Michael
Zielinski has reported that there are no longer
any Enforcer hits from ACE now after the fixes
from 13/4/93.
18/4/93 - ACE v1.02 released.
*******************************************************************************
9/5/93 - Work on ACE recommenced.
- ARG$(0) added for access to a CLI command's name.
11/5/93 - CHDIR command implemented.
18/5/93 - 21/5/93 - Enhanced FILES command implemented.
30/5/93 - A few string functions (ARG$,SPACE$,STRING$,UCASE$)
were using a single buffer for each result
which was being overwritten during evaluation
of an expression such as: UCASE$(..) = UCASE$(..)
This was fixed by creating a temporary string
for each function call as with other string
functions.
- * INPUT$ still uses a single 32K buffer however! *
6/6/93 - Command line argument handling routines completely
rewritten in C. This fixed an infrequent bug in
which the last argument wasn't always being parsed
and enabled the correct parsing of quoted arguments.
- Added two new compiler switches: -E and -c. The
first creates a file called ace.err which contains
all the compile-time errors at the end of an ACE run.
The second includes each ACE source code line as a
comment in the assembly source code.
7/6/93 - A bug in exec.library version checking was
preventing CLS from correctly changing the
background colour after a COLOR command on
machines higher than V37 (ie: Wb 3.0 machines
like the A1200). This is now fixed.
10/6/93 - Fixed a bug in which CLOSE was sometimes causing a
privilege violation processor trap. DOSBase wasn't
always being moved to a6 prior to calling the
dos.library Close function (!).
12/6/93 - Added ptr_term() function between expterm() and
factor() in expression parser to correct the
precedence of !%, !& and !* operators.
- I have decided to leave SUB parameters as they
are for now. See ace.doc Subprograms section
for latest details.
- Added SLEEP command. So far only works when in
screen mode.
13/6/93 - Fixed a bug in which insymbol() was being called
one too many times by the "@" code when the address
of a structure member was being found.
- Added code to address_of_object() (used by @ and
VARPTR) to find the address of an array element.
This code - and therefore @ and VARPTR - can now
find the address of:
- simple variables
- external variables
- arrays
- array elements
- structures
- structure members
- Added a -l compiler switch which displays each
ACE program source line before it is compiled.
- Implemented SWAP command ala AmigaBASIC. It swaps
simple and external variables, array elements,
structures or structure members.
14/6/93 - Modified the handling of string value parameters
so that association with BSS storage occurs at the
start of subprogram execution rather than waiting
for an assignment. This fixes the address for the
life of the parameter. One consequence of this is
that VARPTR and @ correctly access the address
of the formal parameter, not the actual parameter.
This also ensures the correct handling of such
parameters by the SWAP command.
19/6/93 - Modified address_of_object() so that when the
address of a structure variable is requested
with @ or VARPTR, the address of the variable
in the stack frame is returned, rather than the
start address of the structure. The latter can
still be obtained by simply referencing the
variable (eg: x = mystructvar). The modification
makes variable structure parameters possible
(see ace.doc "Structures" for an example).
20/6/93 - Made structures sharable with the SHARED statement.
- SUB parameters may now be preceded by SHORTINT,
LONGINT,SINGLE or STRING to indicate data type
rather than always having to use %,&,! or $.
- String array elements can now have a specifiable
size via a new SIZE option in DIM.
- String variable declarations with STRING command
will now accept defined constants for the SIZE
option.
29/6/93 - A bug in both BIN$ and OCT$ (such that negative
values were being negated) was fixed.
30/6/93 - ADDRESS data type added. This is really just an
alias for LONGINT but it makes a lot more sense
when viewed in the context of a variable, parameter
or structure member which holds an address.
- It is now possible to declare a SUB to be of a
certain data type by using: LONGINT,SHORTINT etc.
- Shared structures worked fine when modifying/using
structure members, but not when modifying the
address held by the structure variable itself.
This has been fixed.
1/7/93 - ALLOC function implemented. This is a hassle-free
Unix-style memory allocator which makes use of
the Alloc/FreeRemember functions of Intuition.
2/7/93 - Added ASSEM..END ASSEM for inline assembly code
inclusion.
- OPTION <switch>+|-[,<switch>+|-..] can now be
used to set compiler directives as well as being
able to do so from the command line.
3/7/93 - Fixed a bug in which the type of structure
members was not being correctly determined by
the SWAP command such that short integer and
string structure members were not being handled
properly.
4/7/93 - SIZEOF now correctly returns the size of a
structure variable. Prior to today, only
the size of a structure definition was
correctly returned. This was an oversight.
10/7/93 - ACE version 1.1a released.
*******************************************************************************
4/9/93 - Work on ACE v2.0 commenced.
4/9/93 - 12/9/93 - Flexible serial I/O support added to ACE. Up to
255 channels are supported.
- ERR function added (serial errors only so far).
25/9/93 - Serial I/O routines tidied up.
- ERROR trapping implemented (serial errors only
so far).
26/9/93 - Buffered file I/O error codes added. These are
returned by ERR and recognised by ON ERROR.
10/10/93 - TAB function now works for screens.
- Implemented PTAB function.
- Made PRINT command screen/window mode transparent.
- This is all part of a conspiracy to make ACE able
to handle Intuition and DOS windows completely
transparently. Next comes INPUT transparency.
11/10/93 - Made INPUT command screen/window mode transparent!
- Implemented SPC function.
24/10/93 - Extended ctrl-c break trapping to screen mode.
24/10/93 - 25/10/93 - Intuition windows implemented! ACE now allows
for windows on screens! In fact, all windows
except the shell/CLI are now Intuition windows
in ACE. Next comes menus and gadgets...
- Added WINDOW(12) and WINDOW(13) which return
font width and height (respectively) for the
current output window.
- Screen colours are now adopted from Workbench
as per AmigaBASIC.
26/10/93 - Window close event trapping implemented. Since
ACE doesn't automatically handle the closing of
windows when the close gadget has been clicked,
a compiler switch (-w) and user-defined event
trapping was deemed to be the best way to handle
this.
- Fixed yet another bug in CLS which was causing
the print position to be incorrectly aligned in
Intuition windows.
1/11/93 - ACE windows now handle certain control characters
(ASCII: 7,8,9,10,12,13) in exactly the same way as
AmigaBASIC, eg: CHR$(7) rings the BELL!
- Implemented boolean gadgets and gadget WAITing.
Next comes gadget event trapping, a gadget function,
string and proportional gadgets, as well as some
tidying up.
2/11/93 - Implemented GADGET(n) function and ON GADGET event
trapping.
6/11/93 - Implemented String and LongInt gadgets.
7/11/93 - 8/11/93 - Implemented proportional gadgets (horizontal and
vertical sliders).
- Window close gadget events are now passed on for
ON WINDOW or -w compiler switch trap handling.
9/11/93 - 10/11/93 - Menus have finally been implemented in ACE!! This
includes menu command keys (keyboard shortcuts),
MENU WAIT command, MENU event trapping and MENU(n)
function.
5/12/93 - MENU and GADGET trapping/WAITing now fully
supports WINDOW close-gadget handling.
- WAIT GADGET 0 implemented: waits for ANY gadget.
This is in my opinion, the best method of dealing
with gadgets in ACE since it is very flexible and
CPU-nice. It is however modal.
- Fixed two bugs in the completely rewritten INPUT
code: no space after "?" and no scrolling after
INPUT at bottom of window.
15/12/93 - Fixed PRINT/PRINTS/PRINT# inability to accept
some parameters delimited only by spaces. ACE
seems to accept just about anything delimited
by spaces now (or of course by commas/semicolons).
- Fixed a long-standing bug in which the compiler
would incorrectly parse IF .. THEN PRINT ELSE ..
such that ELSE was ignored. This works fine now.
16/12/93 - 17/12/93 - Fixed BSS structure object alignment so that
all such structures will be long-word aligned.
- Reduced the amount of code written to the target
file when internal compiler errors occur to a
short skeleton program. This may yet be further
minimised.
- I have started the process of improving the
efficiency of the compiler's memory management
routines by using code similar to the ALLOC
function in ACE as well as trying to reduce
the size of each node in the symbol table.
- The arbitrary DIM limit of 10 dimensions has
been removed; 255 are now allowed as per
AmigaBASIC.
17/12/93 - 18/12/93 - Memory management and efficiency improvement
continues.
- The compilation line number indicator has been
streamlined to cut down on I/O and improve its
appearance.
- Memory leaks now seem to be "capped".
- The arbitrary SHARED limit of 40 has been lifted.
- Fixed a problem caused by editors which don't
automatically append a line-feed (ASCII 10)
to the end of a file, such that the last line
of a program wasn't being parsed.
- SERIAL OPEN randomly generating ERR=300 (OPEN_ERR).
Probably caused by OpenDevice() result not being
coerced from BYTE to ULONG (??). Fixed this.
- Fixed a bug in which insufficient memory was
being allocated to hold DIM index information.
24/12/93 - CHR$(13) now only performs a CR (in user-defined
windows) as per the CON: and RAW: windows.
In AmigaBASIC, CHR$(13) does the same as CHR$(10),
ie: LF.
- Appended ASL library stub (generated by genstubs)
to ACE's ami.lib so that ASL file requesters can
be used by FILEBOX$ function (see below).
- Implemented MSGBOX and FILEBOX$ functions which
easily allow the ACE programmer to invoke system
and file requesters respectively. Thus far only
the ASL file requester has been implemented. The
next step is to test for the operating system
version at run-time and call different file
requester code for Amigas running anything less
than 2.04.
- Started writing the code for an IDE so that ACE
can be run from the Workbench. This will be
developed over the coming months, but a simple
version should be working within days.
25/12/93 - Yes I know it's Xmas. It's also 1 am.
So I'm a fanatic! :-).
- I have *finally* found the ZC code which causes
the conflict with ACE's ctrl-c trapping mechanism.
Upon examination of the ZC source code, I found
the culprit to be a function called Chk_Abort().
This I redefined (in misc.c of ACE's source code)
to do nothing except return 0. This redefinition
has also been made in app.c.
- APP now uses the alloc()/free_alloc() functions
for handling memory allocations.
26/12/93 - Modified ACE so that the ".b" extension can be
used. This is still optional though. The main
reason for doing this was to accomodate TDS's
(Twilight Development System, an excellent
shareware IDE) apparent need to have the
extension of source files made explicit.
- Fixed MsgBox so that it works correctly under
Wb 1.3. The requester wasn't taking on the
correct proportions.
- Added support for a Wb 1.3 FILEBOX$. It requires
the arp.library. I may eventually replace this
with standalone code (when I get time to write
a nice, simple file requester or some kind soul
gives me the source for one).
27/12/93 - Implemented "SYSTEM command-string" which has the
same effect as Execute(command-string,0L,stdout).
- Finally got around to implementing DEF FN, as a
simple variation on SUB.
28/12/93 - Optional parameter is now legal in ACE's RND
function. It is currently only a dummy.
- FileBox$ modified so that a single string
parameter is required. This allows a title
for the requester to be supplied (eg: "Open").
2/1/94 - As promised above (see 24/12/93) I've written
a simple IDE for ACE called AIDE. This is 1000
lines of ACE code and the results are fairly
pleasing. The source code for this program
will be included in the archive as an example
of what can be done with some of ACE's more
recent features. AIDE currently only runs
properly under Wb 2.04 (and up).
- Fixed a bug in which IF..THEN struct->member...
was causing an Undeclared label error!
- Changed the return values of MsgBox to -1 and 0
instead of 1 and 0 so that "OK" (or whatever the
first gadget is) can be seen as a boolean TRUE.
- String structure members didn't allow a named
numeric constant to be given for the optional
SIZE parameter, but they do now.
- String array, structure member and variable
declarations allowed a string of non-positive
size. This has been fixed.
3/1/94 - I started out with the simple intention of
adding a bit more compatibility to ACE's
shared library function handling and ended
up with almost total compatibility with
AmigaBASIC. Only "almost" because shared
library function declarations are still
mandatory in ACE. That's now the only
difference. The previous ACE syntax is
still supported though.
4/1/94 - I have written an ACE program (autonum.b)
which takes the drudgery out of maintaining
the line number references to the sections
in ace.doc and also adds page numbers.
5/1/94 - Implemented a SYSTEM function which returns
ExecBase->libNode.lib_Version (eg: 34 = Wb 1.3).
6/1/94 - After some false starts, I've added "EXIT FOR"
which provides a (read: THE) clean way of exiting
from a FOR..NEXT loop in ACE.
- Implemented INPUTBOX and INPUTBOX$! I took the
syntax from Visual Basic's functions of the same
names. ACE now has 3 standard requester types.
7/1/94 - Completed the last bits of improving the
efficiency of ACE's memory allocation routines.
I couldn't get it to produce any memory leaks.
8/1/94 - Well, I thought I was finished with the memory
allocation stuff from yesterday, but I decided
to try speeding things up some more. This I have
done by decreasing the number of allocation
function calls by half for the code list. I've
also switched to ZC.lib's malloc() & free() which
seem to be solid.
- Tested ACE on an A1200 this morning. It seems fine
although a "Magic Menus" commodity didn't get along
too well with ACE's menus.
- Just finished my standard pre-release testing run
of ACE which involves compiling and running over
50 programs under Wb 2.04. A number of programs
were also tested under Wb 1.3 with and without
fast RAM switched on.
9/1/94 - Fixed a bug which made A68K generate syntax errors
because some label names conflicted with assembly
keywords (CPU register names to be specific).
- In the process I found a couple more bugs:
variables starting with an underscore but with
no trailing type character were not being assigned
a data type; DEF FN return values were not always
being coerced correctly.
- Everything from yesterday is now being re-tested.
10/1/94 - Fixed a bug in which ACE tried to clean up
asynchronous speech when the narrator.device
was not present and SAY had aborted. Sigh.
Another testing run me-thinks.
12/1/94 - 13/1/94 - Peter Zielinski (Sydney) has been testing ACE the
last couple of days and found a problem in which
menus looked weird with some fonts. This has been
fixed.
- I realised that there would be a similar problem
with InputBox$ and fonts other than Topaz 8. This
function has been modified to handle non-topaz-8
requester title fonts, but Topaz 8 is used for
the requester prompt and boolean gadget text.
- Fixed a bug in which LIBRARY CLOSE (used without
a specific library name) was producing incorrect
library base names for libraries not on ACE's
standard libraries list (ie: those opened at
the start of a program run and closed at the end)
resulting in an undefined label error from A68K.
- Also, a library base (again, for non-ACE-listed
libraries) now gets zeroed after a call to ACE's
_close_library routine in case it's closed again
(_close_library check for NULL).
14/1/94 - Improved menu text rendering by using the graphics
library TextLength() function to get more precise
widths for menu titles and items.
15/1/94 - Fixed a bug in which INPBOX[$] was growing in
size (from the bottom) when called multiple times
with a non-topaz font as the screen font.
- Tried many things to fix a bug in which INPUTBOX[$]
gadgetry display gets corrupted by _some_ fonts.
- Improved INPUTBOX[$] by making the string gadget
active when the requester is rendered. This means
that the user doesn't have to select the string
gadget before entering text into it.
- Tweaked the width of menu item text highlighting.
- AIDE has been steadily improved over the last week.
16/1/94 - Tested all example programs under 2.04 and 1.3
(and also with NoFastMem under 1.3).
19/1/94 - ACE version 2.0 released.